/*
 * Sandora, a Falling Sand Game for the Pandora
 * Copyright (C) 2011  WaveHack <projects.sandora@wavehack.net>
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
#ifndef PARTICLE_H
#define PARTICLE_H

#define PARTICLE_ZOOM 4

typedef enum {
	PT_NONE = 0,

	// Still
	PT_WALL,

	// Falling
	PT_WATER,
	PT_SAND,

	NUM_PARTICLE_TYPES
} particleTypeId_t;

typedef struct {
	const char *name;
	Uint32 color;
	bool selectable;
	//int spreadRate;
	//int horizontalSpreadRate; // horizontal spread rate (liquids and gasses spread faster)
	float gravity; // fall rate. 0.f = still, 1.f = max down, -1.f = max up
} particleType_s;



/*
typedef enum {
	PT_NONE = 0,

	// Stills
	PT_WALL,
//	PT_IRONWALL,
//	PT_STOVE,
//	PT_ICE,
//	PT_PLANT,
//	PT_VOID,
//	PT_C4,
//	PT_CERA,
//	PT_FUSE,
//	PT_WOOD,
//	PT_CRYSTAL,
//	PT_EARTH,
//	PT_PIPE,
//	PT_VOLCANO,

	// Fluids
	PT_WATER,
	PT_SAND,
	PT_SALT,
	PT_OIL,
//	PT_DIRT,
//	PT_ACID,
//	PT_NITRO,
//	PT_NAPALM,
//	PT_GUNPOWDER,
//	PT_OWKO,
//	PT_CONCRETE,
//	PT_COMET,
//	PT_REPLICATOR,
//	PT_ANTIMATTER,
//	PT_ELEVATOR,
//	PT_GLUE,
//	PT_EXTINGUISHER,
//	PT_LAVA,

	// Slow Falling
//	PT_SEED,
//	PT_PARASITE,

	// Combined
	PT_SALTWATER,
//	PT_MUD,

	// Floating
//	PT_STEAM,
//	PT_FIRE,
//	PT_METHANE,
//	PT_SMOKE,
//	PT_GAS,
//	PT_GAS2,

	// Spouts
//	PT_WATERSPOUT,
//	PT_SANDSPOUT,
//	PT_SALTSPOUT,
//	PT_OILSPOUT,
//	PT_TORCH,
//	PT_GASSOURCE,
//	PT_GAS2SOURCE,

	// Special
//	PT_RUST,
//	PT_EMBER,

	MAX_PARTICLE_TYPES
} particleType_t;
*/

extern particleTypeId_t currentParticleType;

// Prototypes
void initParticles(void);
void deinitParticles(void);
void updateParticles(void);
void drawParticles(void);
void addParticlesCircle(int x, int y, int radius);
void clearParticleScreen(void);

#endif // PARTICLE_H
